package com.eian.boot.metrics.annotation;

import java.lang.annotation.*;

/**
 * 性能监控配置注解
 * 用于标记需要进行包扫描的类或包
 *
 * @author alex.meng
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface PerformanceConfig {

    /**
     * 需要扫描的包路径
     * 支持通配符，如：com.eian.**.service
     */
    String[] basePackages() default {};

    /**
     * 需要扫描的类
     */
    Class<?>[] basePackageClasses() default {};

    /**
     * 包含的方法名模式
     * 支持正则表达式
     */
    String[] includePatterns() default {".*"};

    /**
     * 排除的方法名模式
     * 支持正则表达式，优先级高于includePatterns
     */
    String[] excludePatterns() default {};

    /**
     * 是否监控私有方法
     */
    boolean includePrivate() default false;

    /**
     * 是否监控静态方法
     */
    boolean includeStatic() default true;

    /**
     * 最小方法执行时间阈值（毫秒）
     * 只有执行时间超过此阈值的方法才会被记录
     */
    long minExecutionTime() default 0;
}
